#include "vtor_spi.h"

#ifdef __VTOR_SPI_SLAVE__

// 加入用户工程宏
//#ifdef __DEMO_PROJECT__
#ifdef __VTOR_LCEDA_OSC__

#include "main.h"

VtorSpi vtorSpiSlaveArray[2] = {0};

typedef struct
{
	VtorSpi* spi;
	GPIO_TypeDef* clkPort;
	uint16_t clkPin;
	GPIO_TypeDef* mosiPort;
	uint16_t mosiPin;
	GPIO_TypeDef* misoPort;
	uint16_t misoPin;
	GPIO_TypeDef* csPort;
	uint16_t csPin;
}VtorSpiSlave_Stm32HalArray;

const static VtorSpiSlave_Stm32HalArray VtorSpiSlaveGpioArray[] = 
{
	{&vtorSpiSlaveArray[0],
		GPIOA, GPIO_PIN_5, GPIOA, GPIO_PIN_6, GPIOA, GPIO_PIN_7, GPIOA, GPIO_PIN_2},
	{&vtorSpiSlaveArray[1],
		GPIOB, GPIO_PIN_3, GPIOB, GPIO_PIN_5, NULL, 	0, GPIOB, GPIO_PIN_6},
	
	{NULL, NULL, 0, NULL, 0},
};

int8_t VtorSpiSlave_FindSpiIndex(VtorSpi* spi)
{
	for(int8_t i = 0; VtorSpiSlaveGpioArray[i].spi != NULL; i++)
	{
		if(spi == VtorSpiSlaveGpioArray[i].spi)
		{
			return i;
		}
	}
	return -1;
}

uint8_t VtorSpiSlave_ReadClk(VtorSpi* spi)
{
	return 0;
}
uint8_t VtorSpiSlave_ReadMosi(VtorSpi* spi)
{
	return 0;
}
void VtorSpiSlave_WriteMiso(VtorSpi* spi)
{
}
uint8_t VtorSpiSlave_ReadCs(VtorSpi* spi)
{
	return 0;
}







void VtorSpiSlave_Init(void)
{
	GPIO_InitTypeDef GPIO_InitStruct = {0};

	GPIO_InitStruct.Pull = GPIO_PULLUP;
	GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
	
	for(int8_t i = 0; VtorSpiSlaveGpioArray[i].spi != NULL; i++)
	{
		// clk mosi cs为中断输入
		GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING_FALLING;
		GPIO_InitStruct.Pin = VtorSpiSlaveGpioArray[i].clkPin;
		HAL_GPIO_Init(VtorSpiSlaveGpioArray[i].clkPort, &GPIO_InitStruct);
		GPIO_InitStruct.Pin = VtorSpiSlaveGpioArray[i].mosiPin;
		HAL_GPIO_Init(VtorSpiSlaveGpioArray[i].mosiPort, &GPIO_InitStruct);
		if(NULL != VtorSpiSlaveGpioArray[i].csPort)
		{
			GPIO_InitStruct.Pin = VtorSpiSlaveGpioArray[i].csPin;
			HAL_GPIO_Init(VtorSpiSlaveGpioArray[i].csPort, &GPIO_InitStruct);
		}
		
		// miso 为输出
		GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
		if(NULL != VtorSpiSlaveGpioArray[i].misoPort)
		{
			GPIO_InitStruct.Pin = VtorSpiSlaveGpioArray[i].misoPin;
			HAL_GPIO_Init(VtorSpiSlaveGpioArray[i].misoPort, &GPIO_InitStruct);
		}
		
	}
	
}



#endif // __USER_PROJECT__

#endif // __VTOR_SPI_SLAVE__

